package com.server.domain.process;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.io.Serializable;

/**
 * 实体类代码
 *
 * lombok：使用注解的形式生成getter/setter方法
 * 使用注解的形式配置到实体类上
 * @Getter              getter方法
 * @Setter              setter方法
 * @NoArgsConstructor   无参构造
 * @AllArgsConstructor  满参构造
 * @Data                =Getter+Setter
 *
 * 使用JPA操作数据库
 *      配置实体类和表的映射关系
 *      配置字段与属性的映射关系（主键/普通属性）
 */

@Entity
@Table(name = "process_edge")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProcessEdge implements Serializable {
    /**
     * 边id
     */
    @Id
    private String id;
    /**
     * 所属WorkFlow id
     *      Many To One
     */
    private String workflowId;
    /**
     * 边类型
     */
    private String type;
    /**
     * 源节点id（外键）
     */
    private String sourceNodeId;
    /**
     * 目标节点id（外键）
     */
    private String targetNodeId;
    /**
     * 边开始坐标(x,y)
     *      x:double
     *      y:double
     *      json格式
     *      "startPoint": {
     *                 "x": 1000,
     *                 "y": 230
     *             },
     */
    private String startPoint;
    /**
     * 边结束坐标(x,y)
     *      x:double
     *      y:double
     *      json格式
     *      "endPoint": {
     *                 "x": 1000,
     *                 "y": 350
     *             },
     */
    private String endPoint;
    /**
     * 边属性字段
     *      可扩展/可为空
     */
    private String properties;
    /**
     * 开始坐标与结束坐标数组
     *      json格式
     *      "pointsList": [
     *                 {
     *                     "x": 1000,
     *                     "y": 610
     *                 },
     *                 {
     *                     "x": 1000,
     *                     "y": 670
     *                 }
     *             ]
     */
    private String pointList;
}
